package NP;
//
//  PblBinPack.java
//  
//
//  Created by tison on 09/11/09.
//  Copyright 2009 __MyCompanyName__. All rights reserved.
//

public class PblSumV2 extends NPRed
{  

	private int n; // la somme S a atteindre
	private int ent[]; 
	private int c;
	
	public PblSumV2(int n, int ent[], int c){
		this.c = c;
		this.ent = ent;
		this.n = n;
	}

	public PbBinPack redPolyTo(){
		int t = 0; //la somme totale T des entiers donnés divisé en deux

		for (int i = 0; i < ent.length; i++) {
			t += ent[i];
		}
		t = t /2;
		int[] cap = { t, t };// new int[2];
		//il faut que cette somme totale represente la moitié de la somme totale pour l'instance de partition que vous devez construire 
		if(this.n == t){			
			return new PbBinPack(n, ent, 2, cap);
		}
		if(t >= n) {
			//vous pouvez ajouter un element de taille 2S-T si ce nombre est positif pour obtenir une instance de partition

			int entbis[] = new int[ent.length+1]; 
			for (int i = 0; i < ent.length; i++) {
				entbis[i] = ent[i];
			}
			ent[ent.length] = 2*n -c; 
			
			return new PbBinPack(n+1, entbis, 2, cap);
			
		}
		
		//sinon le probleme sum n'a pas de solutions
		return null;

	} 

}
